/**
 * @description 按需加载路由组件
 */
export default class Bundle extends React.Component {
    constructor(props) {
        super(props);
        this.props = props;
        this.state = {
            mod: null,
        };
    }

    componentWillMount() {
        this.load(this.props);
    }

    componentWillReceiveProps(nextProps) {
        if (nextProps.load !== this.props.load) {
            this.load(nextProps);
        }
    }

    load(props) {
        this.setState({
            mod: null,
        });
        props.load((mod) => {
            this.setState({
                // handle both es imports and cjs
                mod: mod.default ? mod.default : mod,
            });
        });
    }

    render() {
        if (!this.state.mod) {
            return false;
        }
        return this.props.children(this.state.mod);
    }
}
